package com.houserent.service;

import com.houserent.domain.House;

/**
 * @Author 小闽
 * @Date 2024/9/3 15:10
 * @PackageName: com.houserent.service
 * @ClassName: HouseService
 * @Description: 房屋增删改查
 * @Version 1.0
 */
public class HouseService {
    /**
     * 保存House对象
     */
    private House[] houses;
    private int houseNum = 1;
    private int countId = 1;

    /**
     * 当创建HouseService对象时，指定数组的大小
     * @param size
     */
    public HouseService(int size){
       houses =  new House[size];
       houses[0] = new House(1,"jack","112","海淀区",2000,"未出租");
    }

    /**
     * 返回House数组中的所有house对象信息
     * @return
     */
    public House[] list(){
        return houses;
    }
    /**
     * 定义add()方法，用于增加房屋信息
     */
    public boolean add(House newHouse){
        // 判断当前House[]中的房屋数量是否大于newHouse
        if (houseNum >= houses.length){
            System.out.println("房屋数值已满，不能再添加！！!");
            return false;
        }
        // 这行代码是要将添加新的房屋newHouse添加到houses数组中当前houseNum的位置，同时houseNum要++
        // 以便于house数组中再次添加新的房屋后能够有后续的编号
        houses[houseNum++] = newHouse;
        countId++;
        newHouse.setId(countId);
        return true;
    }
    /**
     * 定义delete()方法，用于删除房屋
     */
    public boolean delete(int delId){
        // 应当先找到要删除的房屋信息对应的下标
        int index = -1;
        for (int i = 0; i < houseNum; i++) {
            if (delId == houses[i].getId()){ //要删除的id和houses数组中为i的下标的元素一致
                index = i;
            }
        }
        if (index == -1){
            return false;
        }
        //如果找到了
        for (int i = index; i < houseNum - 1; i++) {
                houses[i] = houses[i+1];
        }
        houses[--houseNum] = null;
        return  true;
    }
    /**
     * 定义select()方法用于房屋信息的查询,不能返回一个真假的判断，而是要返回一个house对象
     */
    public House select(int id){
        // 遍历数组中的元素
        for (int i = 0; i < houseNum; i++) {
            if (id == houses[i].getId()){
                return houses[i];
            }
        }
        return null;
    }
}
